/*! Copyright(c) 2008-2012
 *
 *\file		Stm8s_gpioTest.c
 *\brief		
 *\details	
 *
 *\author	Cai Peifeng
 *\version	
 *\date		12Jun12
 *
 *\warning	
 *
 *\history \arg	12Jun12, Cai Peifeng, Create the file
 */
#include "Stm8s_gpio.h"

void GPIO_DeInit_Test(GPIO_TypeDef* GPIOx)
{
	GPIO_DeInit(GPIOx);

	assert_param( (GPIOx->ODR == GPIO_ODR_RESET_VALUE ) );
	assert_param( (GPIOx->DDR == GPIO_DDR_RESET_VALUE ) );
	assert_param( (GPIOx->CR1 == GPIO_CR1_RESET_VALUE ) );
	assert_param( (GPIOx->CR2 == GPIO_CR2_RESET_VALUE ) );

}

void GPIO_Init_Test(GPIO_TypeDef* GPIOx)
{
	GPIO_Init(GPIOx,GPIO_PIN_0,GPIO_MODE_IN_FL_NO_IT);

	assert_param( ( ( GPIOx->DDR & GPIO_PIN_0) == 0x00 ));
	assert_param( ( ( GPIOx->CR1 & GPIO_PIN_0) == 0x00));
	assert_param( ( ( GPIOx->CR2 & GPIO_PIN_0) == 0x00));

	GPIO_Init(GPIOx,GPIO_PIN_6,GPIO_MODE_IN_FL_IT);
	assert_param( ( ( GPIOx->DDR & GPIO_PIN_6) == 0x00 ));
	assert_param( ( ( GPIOx->CR1 & GPIO_PIN_6) == 0x00));
	assert_param( ( ( GPIOx->CR2 & GPIO_PIN_6) == GPIO_PIN_6));

	GPIO_Init(GPIOx,GPIO_PIN_3,GPIO_MODE_IN_PU_NO_IT);
	assert_param( ( ( GPIOx->DDR & GPIO_PIN_3) == 0x00 ));
	assert_param( ( ( GPIOx->CR1 & GPIO_PIN_3) == GPIO_PIN_3));
	assert_param( ( ( GPIOx->CR2 & GPIO_PIN_3) == 0x00));

	GPIO_Init(GPIOx,GPIO_PIN_3,GPIO_MODE_IN_PU_IT);
	assert_param( ( ( GPIOx->DDR & GPIO_PIN_3) == 0x00 ));
	assert_param( ( ( GPIOx->CR1 & GPIO_PIN_3) == GPIO_PIN_3));
	assert_param( ( ( GPIOx->CR2 & GPIO_PIN_3) == GPIO_PIN_3));

	GPIO_Init(GPIOx,GPIO_PIN_3,GPIO_MODE_OUT_OD_LOW_FAST);
	assert_param( ( ( GPIOx->ODR & GPIO_PIN_3) == 0x00 ));
	assert_param( ( ( GPIOx->CR1 & GPIO_PIN_3) == 0x00));
	assert_param( ( ( GPIOx->CR2 & GPIO_PIN_3) == GPIO_PIN_3));	

	GPIO_Init(GPIOx,GPIO_PIN_3,GPIO_MODE_OUT_OD_LOW_SLOW);
	assert_param( ( ( GPIOx->ODR & GPIO_PIN_3) == 0x00 ));
	assert_param( ( ( GPIOx->CR1 & GPIO_PIN_3) == 0x00));
	assert_param( ( ( GPIOx->CR2 & GPIO_PIN_3) == 0x00)); 
	
}

void GPIO_Test()
{
	GPIO_DeInit_Test(GPIOA);
	GPIO_DeInit_Test(GPIOB);
	GPIO_DeInit_Test(GPIOC);
	GPIO_DeInit_Test(GPIOD);
	GPIO_DeInit_Test(GPIOE);
	GPIO_DeInit_Test(GPIOF);

	GPIO_Init_Test(GPIOA);
	GPIO_Init_Test(GPIOC);
	GPIO_Init_Test(GPIOF);
	
}
